{
  /*
    学习目标：ts类型-接口
    作用：描述对象结构
  */

  // 语法 interface为关键字 其后跟接口名字
  // 规范：接口名称大写开头，名称前加上大写I开头
  // 普通用法：描述对象结构
  // 高级用法：可以继承其它的接口，复用属性和方法

  interface IAnimal {
    name: string;
    age: number;
  }

  interface ICat extends IAnimal {
    miaomiao: () => void;
  }

  interface IPerson extends IAnimal {
    // 类似对象类型，?表示可选
    sayHello?: () => void;
  }

  const xiaomao: ICat = {
    name: '美短',
    age: 18,
    miaomiao() {},
  };

  const zs: IPerson = {
    name: '张三',
    // 不写hobby与sayHello等方法也不会报错
    age: 18,
    // sayHello() {
    //   console.log('hello');
    // },
  };
}
